package com.itheima.stock.controller;

import com.itheima.stock.common.domain.*;
import com.itheima.stock.service.StockService;
import com.itheima.stock.pojo.StockBusiness;
import com.itheima.stock.vo.resp.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api/quot")
public class StockController {
    @Autowired
    private StockService stockService;

    @GetMapping("/stockBusiness")
    public R<List<StockBusiness>> getAllBusiness() {
        return stockService.findAllBusiness();
    }

    //获取国内大盘的实时数据
    @GetMapping("/index/all")
    public R<List<InnerMarketDomain>> innerIndexAll() {
        return stockService.innerIndexAll();
    }

    //需求说明: 沪深两市板块分时行情数据查询，以交易时间和交易总金额降序查询，取前10条数据
    @GetMapping("/sector/all")
    public R<List<SectorBlockDomain>> sectorAll() {
        return stockService.sectorAllLimit();
    }

    //沪深涨幅榜功能实现
    @GetMapping("/stock/increase")
    public R<List<StockIncreaseDomain>> stockIncreaseLimit() {
        return stockService.stockIncreaseLimit();
    }

    //涨幅榜更多数据功能实现
    @GetMapping("/stock/all")
    public R<PageResult<StockIncreaseDomain>> stockAllLimit(Integer page, Integer pageSize) {
        return stockService.stockAllLimit(page, pageSize);
    }

    //涨停跌停数据统计功能
    @GetMapping("/stock/updown/count")
    public R<Map> getStockUpDownCount() {
        return stockService.getStockUpDownCount();
    }

    /**
     * 涨幅榜数据分页导出到excel
     *
     * @param response 用于响应excel文件
     * @param page     当前页
     * @param pageSize 每页大小
     */
    //涨幅信息数据到处功能实现
    @GetMapping("/stock/export")
    public void stockExport(HttpServletResponse response, Integer page, Integer pageSize) {
        stockService.stockExport(response, page, pageSize);
    }

    /**
     * 成交量对比
     * 沪深两市个股涨跌行情数据查询，查询T日分时成交量与T-1日分时成交量对比数据
     * 简言之，统计两市成交量在每分钟的之和的统计；
     *
     * @return
     */
    @GetMapping("/stock/tradevol")
    public R<Map> getStockTravolCompare() {
        return stockService.getStockTravolCompare();
    }


    /**
     * 功能描述：统计在当前时间下（精确到分钟），股票在各个涨跌区间的数量
     * 如果当前不在股票有效时间内，则以最近的一个有效股票交易时间作为查询时间点；
     *
     * @return 响应数据格式：
     * {
     * "code": 1,
     * "data": {
     * "time": "2021-12-31 14:58:00",
     * "infos": [
     * {
     * "count": 17,
     * "title": "-3~0%"
     * },
     * //...
     * ]
     * }
     */
    @GetMapping("/stock/updown")
    public R<Map> stockUpDownScopeCount() {
        return stockService.stockUpDownScopeCount();
    }
    /**
     * 功能描述：查询单个个股的分时行情数据，也就是统计指定股票T日每分钟的交易数据；
     *         如果当前日期不在有效时间内，则以最近的一个股票交易时间作为查询时间点
     * @param code 股票编码
     * @return
     */
    @GetMapping("/stock/screen/time-sharining")
    public R<List<ScreenTimeSharinDomain>> stockScreenTimeSharing (String code){
        return  stockService.stockScreenTimeSharing(code);
    }

    @GetMapping("/stock/screen/dkline")
    public R<List<ScreenDklineDomain>> stockCreenDkLine(String code){
        return  stockService.stockCreenDkLine(code);
    }

}
